package dslProgramGen;

import java.util.List;
import java.util.Map;

/**
 * 原来的MethodNode由trace表示，将其用DSL语句表示，即DslExpressedMethod类
 */
public class DslExpressedMethod {
    /**
     * 方法描述符，例如public static
     */
    public String accessFlags;
    /**
     * 函数名，之前已经处理过了，现在函数名是独一无二的
     */
    public String methodName;
    /**
     * 参数列表
     */
    public List<String> parameters;
    /**
     * 用DSL语句组成的函数内容
     */
    public List<String> methodContentList;
    /**
     * 函数返回值
     */
    public String returnType;

    /**
     * 记录该函数调用的子函数的名称及子函数的参数列表
     * key表示调用子函数的名称
     * value表示调用的子函数的参数列表，若传递的参数为null，则由String "null"表示，参数有可能有 "(Student)obj" 这种强制类型转换的语句
     */
    public Map<String, List<String>> calledSubMethodName2ParameterList;

    public DslExpressedMethod(String accessFlags, String methodName, List<String> parameters, List<String> methodContentList, String returnType, Map<String, List<String>> calledSubMethodName2ParameterList) {
        this.accessFlags = accessFlags;
        this.methodName = methodName;
        this.parameters = parameters;
        this.methodContentList = methodContentList;
        this.returnType = returnType;
        this.calledSubMethodName2ParameterList = calledSubMethodName2ParameterList;
    }
}
